0x0044cad2:  mov    0x6b8d54,%eax     # global pointer
0x0044cad7:  mov    0xb10(%eax),%cl   # load TotalWhitePawns
0x0044cadd:  add    $0x4,%esp
0x0044cae2*  movl   $0x1,-0x1c(%ebp)  # set TB_use_OK to 1
0x0044cae0:  test   %cl,%cl           # if TotalWhitePawns
0x0044cae9:  je     0x44cbab           
0x0044caef:  mov    0xb11(%eax),%cl   #    && TotalBlackPawns
0x0044caf5:  test   %cl,%cl
0x0044caf7:  je     0x44cbab
0x0044cafd:  mov    0xa78(%eax),%edx    # load WhitePawns (32 bits)
0x0044cb03:  mov    0xa7c(%eax),%eax    # load WhitePawns (other 32)
0x0044cb09:  mov    %edx,-0x8(%ebp)
0x0044cb0c:  mov    %eax,-0x4(%ebp)
0x0044cb0f:  bsf    -0x8(%ebp),%edx     # FirstOne for WhitePawns
0x0044cb13:  mov    $0x0,%eax
0x0044cb18:  jne    0x44cb2a
0x0044cb1a:  bsf    -0x4(%ebp),%edx
0x0044cb1e:  mov    $0x20,%eax
0x0044cb23:  jne    0x44cb2a
0x0044cb25:  mov    $0x20,%edx
0x0044cb2a:  add    %edx,%eax
0x0044cb2c:  mov    %eax,%ebx           # store FirstOne in ebx (wpawn)
0x0044cb2e:  mov    0x6b8d54,%eax       # reload global pointer
0x0044cb33:  mov    0xa80(%eax),%ecx    # load Black Pawns (32 bits)
0x0044cb39:  mov    0xa84(%eax),%edx    # load Black Pawns (other 32)
0x0044cb3f:  mov    %ecx,-0x8(%ebp)
0x0044cb42:  mov    %edx,-0x4(%ebp)
0x0044cb45:  bsf    -0x8(%ebp),%edx     # FirstOne for BlackPawns
0x0044cb49:  mov    $0x0,%eax
0x0044cb4e:  jne    0x44cb60
0x0044cb50:  bsf    -0x4(%ebp),%edx
0x0044cb54:  mov    $0x20,%eax
0x0044cb59:  jne    0x44cb60
0x0044cb5b:  mov    $0x20,%edx
0x0044cb60:  add    %edx,%eax
0x0044cb62:  mov    %eax,%ecx           # store FirstOne in ecx (bpawn)
0x0044cb64:  mov    %ecx,%edx
0x0044cb66:  and    $0x7,%edx           # file of bpawn
0x0044cb69:  mov    %ebx,%eax
0x0044cb6b:  and    $0x7,%eax           # file of wpawn
0x0044cb6e:  sub    %edx,%eax           # compute distance
0x0044cb70:  cltd   
0x0044cb71:  xor    %edx,%eax
0x0044cb73:  sub    %edx,%eax           # absolute value of distance
0x0044cb75:  cmp    $0x1,%eax           # if FileDistance is 1
0x0044cb78:  mov    0x6b8d54,%eax [rereload global pointer]
0x0044cb7d:  jne    0x44cbab
0x0044cb7f:  sar    $0x3,%ebx             # get Rank of wpawn
0x0044cb82:  cmp    $0x1,%ebx             # if rank is RANK2
0x0044cb85:  jne    0x44cb91
0x0044cb87:  mov    %ecx,%edx               # copy bpawn to edx
0x0044cb89:  and    $0xfffffff8,%edx        # get the rank of it
0x0044cb8c:  cmp    $0x10,%edx              # if the rank exceeds RANK3
0x0044cb8f:  jg     0x44cba8                  # set TB_use_ok = 0 (@0x44cba8)
0x0044cb91:  and    $0xfffffff8,%ecx      # get Rank of bpawn
0x0044cb94:  cmp    $0x30,%ecx            # if rank is RANK7
0x0044cb97:  jne    0x44cb9e
0x0044cb99:  cmp    $0x5,%ebx               # and Rank(wpawn) is < RANK6
0x0044cb9c:  jl     0x44cba8                  # set TB_use_ok = 0 (@0x44cba87)
0x0044cb9e:  mov    0x10b(%eax),%cl       # load EnPassant(1) [1 is the ply] 
0x0044cba4:  test   %cl,%cl               # if there is no ep target
0x0044cba6:  je     0x44cbab                # skip the next instruction
0x0044cba8:  mov    %esi,-0x1c(%ebp)      # [sets TB_use_ok = 0]
0x0044cbab:  mov    0x6b0951,%cl